TDAArbolBinario

## Interface GTTree<E>

- All Superinterfaces:
    java.lang.Iterable<E>
  All Known Subinterfaces:
    BinaryTree<E>
  All Known Implementing Classes:
    ArbolBinario

      public interface GTTree<E>
      extends java.lang.Iterable<E>

  Interface GTTree Es la interfaz presentada por Goodrich y Tamassia en su cuarta edición. Incluye las operaciones necesarias para manejar un árbol general sin proveer operaciones para modificarlo.
  Author:
    Cátedra de Estructuras de Datos, Departamento de Cs. e Ing. de la Computación, UNS.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Iterable<TDALista.Position<E>>` | `children(TDALista.Position<E> v)` Devuelve una colección iterable de los hijos del nodo correspondiente a una posición dada.
    `boolean` | `isEmpty()` Consulta si el árbol está vacío.
    `boolean` | `isExternal(TDALista.Position<E> v)` Consulta si una posición dada corresponde a un nodo externo.
    `boolean` | `isInternal(TDALista.Position<E> v)` Consulta si una posición corresponde a un nodo interno.
    `boolean` | `isRoot(TDALista.Position<E> v)` Consulta si una posición dada corresponde a la raíz del árbol.
    `java.util.Iterator<E>` | `iterator()` Devuelve un iterador de los elementos almacenados en el árbol en preorden.
    `TDALista.Position<E>` | `parent(TDALista.Position<E> v)` Devuelve la posición del nodo padre del nodo correspondiente a una posición dada.
    `java.lang.Iterable<TDALista.Position<E>>` | `positions()` Devuelve una colección iterable de las posiciones de los nodos del árbol.
    `E` | `replace(TDALista.Position<E> v, E e)` Reemplaza el elemento almacenado en la posición dada por el elemento pasado por parámetro.
    `TDALista.Position<E>` | `root()` Devuelve la posición de la raíz del árbol.
    `int` | `size()` Consulta la cantidad de nodos en el árbol.

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Method Detail

    - #### size

          int size()

      Consulta la cantidad de nodos en el árbol.
      Returns:
        Cantidad de nodos en el árbol.

    - #### isEmpty

          boolean isEmpty()

      Consulta si el árbol está vacío.
      Returns:
        Verdadero si el árbol está vacío, falso en caso contrario.

    - #### iterator

          java.util.Iterator<E> iterator()

      Devuelve un iterador de los elementos almacenados en el árbol en preorden.
      Specified by:
        `iterator` in interface `java.lang.Iterable<E>`
      Returns:
        Iterador de los elementos almacenados en el árbol.

    - #### positions

          java.lang.Iterable<TDALista.Position<E>> positions()

      Devuelve una colección iterable de las posiciones de los nodos del árbol.
      Returns:
        Colección iterable de las posiciones de los nodos del árbol.

    - #### replace

          E replace(TDALista.Position<E> v,
                    E e)
             throws TDALista.InvalidPositionException

      Reemplaza el elemento almacenado en la posición dada por el elemento pasado por parámetro. Devuelve el elemento reemplazado.
      Parameters:
        `v` - Posición de un nodo.
        `e` - Elemento a reemplazar en la posición pasada por parámetro.
      Returns:
        Elemento reemplazado.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.

    - #### root

          TDALista.Position<E> root()
                             throws EmptyTreeException

      Devuelve la posición de la raíz del árbol.
      Returns:
        Posición de la raíz del árbol.
      Throws:
        `EmptyTreeException` - si el árbol está vacío.

    - #### parent

          TDALista.Position<E> parent(TDALista.Position<E> v)
                               throws TDALista.InvalidPositionException,
                                      TDALista.BoundaryViolationException

      Devuelve la posición del nodo padre del nodo correspondiente a una posición dada.
      Parameters:
        `v` - Posición de un nodo.
      Returns:
        Posición del nodo padre del nodo correspondiente a la posición dada.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.
        `TDALista.BoundaryViolationException` - si la posición pasada por parámetro corresponde a la raíz del árbol.

    - #### children

          java.lang.Iterable<TDALista.Position<E>> children(TDALista.Position<E> v)
                                                     throws TDALista.InvalidPositionException

      Devuelve una colección iterable de los hijos del nodo correspondiente a una posición dada.
      Parameters:
        `v` - Posición de un nodo.
      Returns:
        Colección iterable de los hijos del nodo correspondiente a la posición pasada por parámetro.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.

    - #### isInternal

          boolean isInternal(TDALista.Position<E> v)
                      throws TDALista.InvalidPositionException

      Consulta si una posición corresponde a un nodo interno.
      Parameters:
        `v` - Posición de un nodo.
      Returns:
        Verdadero si la posición pasada por parámetro corresponde a un nodo interno, falso en caso contrario.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.

    - #### isExternal

          boolean isExternal(TDALista.Position<E> v)
                      throws TDALista.InvalidPositionException

      Consulta si una posición dada corresponde a un nodo externo.
      Parameters:
        `v` - Posición de un nodo.
      Returns:
        Verdadero si la posición pasada por parámetro corresponde a un nodo externo, falso en caso contrario.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.

    - #### isRoot

          boolean isRoot(TDALista.Position<E> v)
                  throws TDALista.InvalidPositionException

      Consulta si una posición dada corresponde a la raíz del árbol.
      Parameters:
        `v` - Posición de un nodo.
      Returns:
        Verdadero, si la posición pasada por parámetro corresponde a la raíz del árbol,falso en caso contrario.
      Throws:
        `TDALista.InvalidPositionException` - si la posición pasada por parámetro es inválida.